﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FarmaciaWeb.Models;
using System.ServiceModel;
//using SOAPServices;

namespace FarmaciaWeb.Controllers
{
    public class ClienteController : Controller
    {
        //prueba
        ClietesWS.ClientesClient proxy = new ClietesWS.ClientesClient();

        
        private List<Clientes> CrearCliente()
        {
            Distrito monterrico = new Distrito() { Codigo = 1, NomDis = "Monterrico" };
            Distrito lima = new Distrito() { Codigo = 2, NomDis = "Lima" };
            Distrito chaclacayo = new Distrito() { Codigo = 3, NomDis = "Chaclacayo" };

            List<Clientes> cliente = new List<Clientes>();
            cliente.Add(new Clientes() { Dni = "44558293", Nombre = "Felix", Apellidos = "Paragulla Castañeda", Direccion = "El Paraiso 999", Telefono = "986549115", Distrito = chaclacayo });
            cliente.Add(new Clientes() { Dni = "44558292", Nombre = "Juan", Apellidos = "Perez", Direccion = "Alfonso Cobian 666", Telefono = "992159097", Distrito = lima });
            cliente.Add(new Clientes() { Dni = "44558291", Nombre = "Carlos", Apellidos = "Ibañez", Direccion = "Av Javier Prado", Telefono = "987654242", Distrito = monterrico });
            cliente.Add(new Clientes() { Dni = "44558290", Nombre = "Jorge", Apellidos = "Castillo", Direccion = "Los Geranios 546", Telefono = "3591069", Distrito = monterrico });
            cliente.Add(new Clientes() { Dni = "44558289", Nombre = "Ysrael", Apellidos = "Nuñez", Direccion = "Remy Barua 2707", Telefono = "995520272", Distrito = lima });
            cliente.Add(new Clientes() { Dni = "44558288", Nombre = "Valerio", Apellidos = "Meza", Direccion = "Los ficus 1040", Telefono = "995520225", Distrito = lima });
            return cliente;
        }

        private Clientes ObtenerCliente(String dni)
        {
            
            List<Clientes> clien = (List<Clientes>)Session["cliente"];
            Clientes model = clien.Single(delegate(Clientes cliente)
            {
                if (cliente.Dni == dni) return true;
                else return false;
            });
            return model;
        }              

        //
        // GET: /Cliente/

        public ActionResult Index()
        {
            

            SOAPServices.Logo ObejtoLista = new SOAPServices.Logo();

            List<SOAPServices.Dominio.Cliente> lista = new List<SOAPServices.Dominio.Cliente>();
            lista = ObejtoLista.ListarCliente();
             
            List<Clientes> model = new List<Clientes>();
            foreach(SOAPServices.Dominio.Cliente objClient in lista)
            {
                Clientes objCli= new Clientes ();
                Distrito obDistrito= new Distrito ();
                obDistrito.Codigo = objClient.Distrito.Codigo ;
                obDistrito.NomDis  = objClient.Distrito.NomDis ;

                objCli.Dni = objClient.Dni;  
                    objCli.Apellidos  = objClient.Nombre ;
                    objCli.Nombre = objClient.Nombre; 
                            objCli.Telefono = "" ;
                objCli.Direccion  =  objClient.Direccion;
                objCli.Distrito  = obDistrito;
            

                model.Add(objCli);
            }

                //(List<Clientes>)lista.ToArray<Clientes>;
            
            return View(model);

        }

        //
        // GET: /Cliente/Details/5

        public ActionResult Details(String dni)
        {
            Clientes model = ObtenerCliente(dni);
            return View(model); 

        }

        //
        // GET: /Cliente/Create

        public ActionResult Create()
        {
            Session["Mensaje"] = "";
            if (Session["distrito"] == null)
            {
                Session["Mensaje"] = "No existe sedes disponibles";
                return RedirectToAction("Index");
            }
            else
            {
                return View();
            }
        } 

        //
        // POST: /Cliente/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                List<Clientes> cliente = (List<Clientes>)Session["cliente"];
                cliente.Add(new Clientes()
                {
                    Dni = collection["Dni"],
                    Nombre = collection["Nombre"],
                    Apellidos = collection["Apellidos"],
                    Direccion = collection["Direccion"],
                    Telefono = collection["Telefono"],
                    Distrito = new Distrito()
                    {
                        Codigo = int.Parse(collection["Distrito.Codigo"]),
                        NomDis = collection["Distrito.NomDis"]
                    }
                });
                return RedirectToAction("Index");

            }
            catch
            {
                return View();
            }

        }
        
        //
        // GET: /Cliente/Edit/5
 
        public ActionResult Edit(string dni)
        {
            Clientes model = ObtenerCliente(dni);
            return View(model);

        }

        //
        // POST: /Cliente/Edit/5

        [HttpPost]
        public ActionResult Edit(string dni, FormCollection collection)
        {
            try
            {                
                Clientes model = ObtenerCliente(dni);
                model.Nombre = collection["Nombre"];
                model.Apellidos = collection["Apellidos"];
                model.Direccion = collection["Direccion"];
                model.Telefono = collection["Telefono"];

                SOAPServices.Logo ObjetoCliente = new SOAPServices.Logo();
                ObjetoCliente.ModificarCliente(1,model.Dni, model.Nombre, model.Direccion, model.Telefono, 1);                
                
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }            

        }

        //
        // GET: /Cliente/Delete/5
 
        public ActionResult Delete(string dni)
        {
            Clientes model = ObtenerCliente(dni);
            return View(model);

        }

        //
        // POST: /Cliente/Delete/5

        [HttpPost]
        public ActionResult Delete(string dni, FormCollection collection)
        {
            try
            {
                List<Clientes> clie = (List<Clientes>)Session["clientes"];                                
                clie.Remove(ObtenerCliente(dni));                
                ///return View
                return View(clie);
            }
            catch
            {
                return RedirectToAction("Index");
            }

        }
    }
}
